import { ElForm, ElInput, ElTooltip, ElCascader } from 'element-plus';
import type { CascaderProps } from 'element-plus';

/**
 * 全局类型定义
 */

/**
 * 标准 API 响应结构
 * @template T - 响应数据的类型
 */
export interface ResponseType<T = unknown> {
	/** 响应状态码（可能是 code 或 status） */
	status: number;
	code?: number;
	/** 响应消息 */
	message: string;
	/** 响应数据 */
	data: T;
	/** 重定向结果（用于 302 状态） */
	result?: string;
}

/**
 * 列表响应结构
 * @template T - 列表项的类型
 */
export interface ListResponseType<T = unknown> {
	/** 数据列表 */
	list: T[];
	/** 当前页码 */
	currentPage: number;
	/** 每页数量 */
	numPerPage: number;
	/** 总记录数 */
	totalCount: number;
	/** 总页数 */
	totalPages: number;
}

/**
 * 分页信息
 */
export interface PaginationType {
	/** 当前页码 */
	currentPage: number;
	/** 每页数量 */
	numPerPage: number;
	/** 总记录数 */
	totalCount: number;
	/** 总页数 */
	totalPages: number;
}

/**
 * 基础信息（学期列表项、学院列表项、校区列表项、教学楼列表项、教室列表项）
 */
export interface BaseListItemType {
	/** 编号 */
	code: string | number;
	/** 名称 */
	name: string;
}

/**
 * 表单实例
 */
export type FormInstanceType = InstanceType<typeof ElForm>;
export type InputInstanceType = InstanceType<typeof ElInput>;
export type TooltipInstanceType = InstanceType<typeof ElTooltip>;
export type CascaderInstanceType = InstanceType<typeof ElCascader>;
export type CascaderPropsType = typeof CascaderProps;
